The present invention relates generally to drawing programs and computer-aided drafting/designing (CAD/CADD) systems and, more particularly, to precise cursor positioning and screen feedback techniques for creating and manipulating graphic objects.
Computers have become a powerful tool for the rapid and economical creation of pictures. The use of computer graphics is particularly well suited for automating designing and drafting techniques. CAD is like a word processor for drawings. Instead of pen and paper, the CAD user employs a computer keyboard and a mouse, light pen, digitizer tablet, or some other pointing device to create an electronic description of a drawing in the computer's memory. This image is displayed on a monitor and stored on a disk. When the user is satisfied with a drawing, he or she obtains a "hardcopy" by sending the stored image to an output device such as a plotter.
In CAD, one creates an illustration by combining basic geometric objects such as points, lines, and arcs. Each object has a precise mathematical definition facilitating storage in the computer. This also allows the computer to perform complex manipulations and test relations between objects. For example, when an object's dimensions are specified to the computer, the user can view any side of the object to see how it will look after construction.
In drafting, it is often necessary to maintain precise geometric relationships between various objects in a drawing. The draftsman's hand can rarely, if ever, achieve the mathematical precision that is available with CAD systems. However, to take advantage of this precision, the user must accurately communicate to the computer what is to be drawn.
Ordinarily, the user draws by entering, either by keyboard or pointing device, the location of an object's "control points." For example, if the user wants to draw a line (line segment), he or she types in or points to the starting and end points. The computer then displays a line defined by these control points. Alternatively, the computer can infer control points from what the user enters. For example, the user may enter a start point, length, and angle. From this input, the computer calculates the second control point before displaying the line.
Neither input method is perfect. While keyboard entry allows for the precise input of most geometric objects, it is usually not the most efficient means by which the user may communicate with a computer. For example, it would be a tedious task, at best, to draw the entire floor plan of a simple house by keyboard entry. Entering locations with a pointing device, while much faster, relies too much upon the skill of the user for accuracy. As a result, there is much interest in developing techniques by which CAD users may efficiently communicate with computers without sacrificing precision.
Sutherland describes a positioning technique based upon the use of a light pen (Sutherland, Sketchpad: A Man-Machine Graphic Communication System, Proceedings-Spring Joint Computer Conference, 1963). The Sutherland Sketchpad system allows a user to communicate rapidly with a computer through the medium of line drawing.
Recognizing that typed statements were a cumbersome way to describe the shapes of complex objects, the Sketchpad system uses a light pen for the placement of a drawing cursor. To compensate for the inaccuracy created by freehand pointing, the exact location of the light pen is ignored in favor of a "pseudo-pen" location which is exactly on an object aimed at. In other words, if the light pen location is sufficiently close to an object, the computer assumes that the user wants to point to that object. If no object is aimed at, the pseudo-pen location and actual pen location are identical. Thus, the Sketchpad system compensates for a user's imprecise cursor placement by constraining or snapping control points onto an existing object.
Bier discloses the use of "gravity active" points and "alignment objects." See, Bier, Snap Dragging, SIGGRAPH '86 Proceedings, Volume 20, No. 4, Aug. 18-22, 1986, 233-240. Bier's system uses a "caret" as the source of precision. The caret is distinct from the cursor: the cursor always moves with the mouse while the caret can stray from the cursor and "snap" to a gravity object which attracts it. When a control point is added to an illustration, it is always positioned at the location of the caret.
Typical two-dimensional (2D) drafting systems describe points in terms of x and y coordinates (Cartesian coordinate system). Three-dimensional (3D) drafting systems, however, accept x, y, and z coordinates, thereby allowing the representation and display of objects from different viewing directions. A 3D system is preferable since, in many design applications, the draftsman must describe a three-dimensional object.
3D capabilities stretch CAD to encompass the properties that distinguish real objects from imaginary 2D projections. A 3D wire-frame model may represent an object as a see-through collection of lines and curves in 3-axis coordinate space. A 3D surfaced model represents the same model as a collection of bounding surfaces. The final 3D solid model represents an object as a mathematical solid. As compared to 2D systems, 3D models are easily converted to shaded images that give the draftsman an idea of what the final product will look like. 3D CAD systems can also be used to calculate mechanical properties of objects such as volumes, weights, centers of gravity, and moments of inertia.
While prior systems offer certain advantages over two-dimensional techniques, these systems completely ignore other "interesting" points which arise in 3D space from user-created geometries. In particular, prior art systems ignore interesting points which arise from user created geometries in different planes. With respect to two-dimensional techniques, prior systems also ignore the use of a plurality of interesting points as a means of constraining user-created geometries. The invention recognizes these shortcomings and provides novel methods and apparatus which fulfill these and other needs.